﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Collections;
using System.Windows.Forms;

namespace GIFT
{
    class ConsultaFechaHora
    {
       //Constructor de la clase
        public ConsultaFechaHora()
        {
            consulta = new Consulta();
        }

        //Busca en la base de datos el atributo del FechaHora con el nombre que recibe como parametro
        public String buscarAtributo(String nombre, String atributo)
        {
            String atr = "ERROR";
            SqlDataReader datos;
            String sentenciaSql = "Select ["+ atributo+ "] from fechaHora Where nombre='" + nombre + "'";
            datos = consulta.HacerConsulta(sentenciaSql);
            if (datos != null) //si hay datos se llenan los campos
            {
                while (datos.Read())
                {
                    atr = datos.GetValue(0).ToString();
                }
            }
            consulta.CierraConexion(); //Cierra conexion
            return atr;
        }

        //Recibe un nombre y retorna true si este ya existe en la base de datos
        public bool existe(String nombre)
        {
            SqlDataReader datos;
            String sentenciaSql;
            sentenciaSql = "Select nombre From fechaHora  Where nombre ='" + nombre + "'";
            datos = consulta.HacerConsulta(sentenciaSql);
            if (datos.HasRows)//lo que se haga para saber si no retorno resultados 
            {
                consulta.CierraConexion();//Cierra la conexion
                return true;
            }
            consulta.CierraConexion();//Cierra la conexion
            return false;
        }

        //Busca nombres de los fechaHora que contengan la hilera que reciba como parametro en el nombre o la descripcion
        public ArrayList buscarConcordancias(String frase)
        {
            ArrayList campos = new ArrayList();
            String sentenciaSql;
            SqlDataReader datos;
            sentenciaSql = "Select F.nombre From fechaHora F Where F.nombre LIKE '%" + frase + "%' OR F.descripcion LIKE '%" + frase + "%'";
            datos = consulta.HacerConsulta(sentenciaSql);
            if (datos != null)
            {
                while (datos.Read())
                {
                    campos.Add(datos.GetValue(0).ToString());
                }
            }
            consulta.CierraConexion();
            return campos;
        }

        //Obtiene de la base de datos todos los fechaHoras existentes, y los retorna en un arreglo
        public ArrayList obtieneFechaHoras()
        {
            ArrayList fechaHoras = new ArrayList();
            String sentenciaSql;
            SqlDataReader datos;
            sentenciaSql = "Select nombre From fechaHora";
            datos = consulta.HacerConsulta(sentenciaSql);
            if (datos != null)
            {
                while (datos.Read())
                {
                    fechaHoras.Add(datos.GetValue(0).ToString());
                }
            }
            consulta.CierraConexion();
            return fechaHoras;
        }

        //Borrar una fechaHora
        public void borrar(String nombre)
        {
            String sentenciaSql = "DELETE FROM fechaHora WHERE nombre ='" + nombre + "'";//crea la consulta
            consulta.HacerConsulta(sentenciaSql);//la ejecuta
            consulta.CierraConexion();//cierra la conexion
        }

        //Guarda en la base de datos un nuevo fechaHora, recibe los valores a introducir 
        public void crear(String nombre, String descripcion, String formDespliegue, String fecDef, String conVenc, String preaviso)
        {//CAMBIAR ESTE METODO
            MessageBox.Show(fecDef);
            String sentenciaSql = "INSERT INTO [GIFT].[dbo].[fechaHora] ([nombre],[descripcion],[fecha_actualizacion], [formato despliegue], [fecha por defecto], [con vencimiento], preaviso) VALUES('" + nombre + "','" + descripcion + "',(GetDate())," + formDespliegue + ",cast(('" + fecDef + "')as varchar),'"  + conVenc + "'," + preaviso + ")";
            consulta.HacerConsulta(sentenciaSql);
            consulta.CierraConexion();//Cierra la conexion
        }

        //Modifica una fecha hora en la base de datos
        public void modificar(String nombre, String descripcion, String formDespliegue, String fecDef, String conVenc, String preaviso)
        {//CAMBIAR ESTE METODO
            String sentenciaSql; //va a guardar la consulta a realizar                        
            sentenciaSql = "UPDATE fechaHora SET descripcion= '" + descripcion + "',fecha_actualizacion= (GetDate()),[formato despliegue]= " + formDespliegue + ",[fecha por defecto]=cast(('" + fecDef + "')as varchar),[con vencimiento]='" + conVenc + "',[preaviso]=" + preaviso + " WHERE nombre= '" + nombre + "'";
            consulta.HacerConsulta(sentenciaSql); //Ejecuta la consulta
            consulta.CierraConexion();//Cierra la conexion
        }


        //Variables globales
        private Consulta consulta;
    }
}


/*
 
correlativo nombre descripcion fecha_actualizacion [formato despliegue] [fecha por defecto] [con vencimiento] preaviso
 
 */